﻿Public Class ctrRegiao
    Inherits ctrPadrao

#Region "Declaração de variáveis"

    Private objRegiao As New Persistencia.perRegiao
    Private objDiaAtendimento As New Persistencia.perDiaAtendimento
    Private iIdRegiao As Int32

#End Region

#Region "Propriedades"

    Public Property IDRegiao() As Int32
        Get
            Return Me.iIdRegiao
        End Get
        Set(ByVal value As Int32)
            Me.iIdRegiao = value
        End Set
    End Property

    Public ReadOnly Property sqlConsulta() As String
        Get
            Return Me.objRegiao.sqlConsulta
        End Get
    End Property

#End Region

#Region "Métodos públicos"

    Public Function salvar(ByVal iIdRegiao As Int32, _
                           ByVal iIdDiaAtendimento As Int32, _
                           ByVal sRegiao As String, _
                           ByVal bSegunda As Boolean, _
                           ByVal bTerca As Boolean, _
                           ByVal bQuarta As Boolean, _
                           ByVal bQuinta As Boolean, _
                           ByVal bSexta As Boolean, _
                           ByVal bSabado As Boolean) As Boolean

        Dim bResultado As Boolean = False
        Dim IDDiaAtendimento As Int32

        Try
            MyBase.iniciarControleTransacional()

            Me.objDiaAtendimento.TransacaoOrigem = MyBase.ControleTransacional
            Me.objRegiao.TransacaoOrigem = MyBase.ControleTransacional

            If iIdRegiao > 0 Then

                If iIdDiaAtendimento > 0 Then
                    Me.objDiaAtendimento.alterarDiaAtendimento(iIdDiaAtendimento, _
                                                               bSegunda, _
                                                               bTerca, _
                                                               bQuarta, _
                                                               bQuinta, _
                                                               bSexta, _
                                                               bSabado)
                Else
                    IDDiaAtendimento = Me.objDiaAtendimento.inserirDiaAtendimento(bSegunda, _
                                                                                  bTerca, _
                                                                                  bQuarta, _
                                                                                  bQuinta, _
                                                                                  bSexta, _
                                                                                  bSabado)

                End If

                Me.alterarRegiao(iIdRegiao, _
                                 sRegiao, _
                                 IDDiaAtendimento)

                Me.iIdRegiao = iIdRegiao

                bResultado = True
            Else

                IDDiaAtendimento = Me.objDiaAtendimento.inserirDiaAtendimento(bSegunda, _
                                                                               bTerca, _
                                                                               bQuarta, _
                                                                               bQuinta, _
                                                                               bSexta, _
                                                                               bSabado)
                Me.iIdRegiao = Me.inserirRegiao(sRegiao, _
                                                IDDiaAtendimento)

                bResultado = True
            End If

            Return bResultado

        Catch ex As Exception
            bResultado = False
            Throw New Exception("Exceção no método 'salvar'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        Finally

            If bResultado Then
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Commit)
            Else
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Rollback)
            End If

            Me.objDiaAtendimento.TransacaoOrigem = Nothing
            Me.objRegiao.TransacaoOrigem = Nothing

        End Try

        
    End Function

    Public Function excluir(ByVal iIdRegiao As Int32, _
                            ByVal iIdDiaAtendimento As Int32) As Boolean

        Dim bResultado As Boolean = True

        Try
            MyBase.iniciarControleTransacional()

            Me.objDiaAtendimento.TransacaoOrigem = MyBase.ControleTransacional
            Me.objRegiao.TransacaoOrigem = MyBase.ControleTransacional

            Me.objDiaAtendimento.excluirDiaAtendimento(iIdDiaAtendimento)

            Me.excluirRegiao(iIdRegiao)

            bResultado = True
            Return bResultado

        Catch ex As Exception
            bResultado = False
            Throw New Exception("Exceção no método 'excluir'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        Finally
            If bResultado Then
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Commit)
            Else
                MyBase.finalizarControleTransacional(Persistencia.perPadrao.eFinalizacaoTransacao.Rollback)
            End If

            Me.objDiaAtendimento.TransacaoOrigem = Nothing
            Me.objRegiao.TransacaoOrigem = Nothing
        End Try
   
    End Function

    Private Sub excluirRegiao(ByVal iIdRegiao As Int32)

        Try
            Me.objRegiao.excluirRegiao(iIdRegiao)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'excluirRegiao'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Public Function selecionarRegiao(ByVal iIdRegiao As Int32) As DataRow
        Try
            Return Me.objRegiao.selecionarRegiao(iIdRegiao)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'selecionarRegiao'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try
    End Function

    Public Function retornarCampoRegiao(ByVal sCampo As String, _
                                        ByVal iIdRegiao As Int32) As DataRow

        Try
            Dim dtDados As New DataTable

            dtDados = Me.objRegiao.selecionarCampoRegiao(sCampo, _
                                                         iIdRegiao)

            If Not dtDados Is Nothing Then
                Return dtDados.Rows(0)
            Else
                Return Nothing
            End If
        Catch ex As Exception
            Throw New Exception("Exceção no método 'retornarCampoRegiao'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region

#Region "Métodos privados"

    Private Sub alterarRegiao(ByVal iIdRegiao As Int32, _
                              ByVal sRegiao As String, _
                              ByVal iIdDiaAtendimento As Int32)
        Try
            Me.objRegiao.alterarRegiao(iIdRegiao, _
                                       sRegiao, _
                                       iIdDiaAtendimento)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'alterarRegiao'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Private Function inserirRegiao(ByVal sRegiao As String, _
                                   ByVal iIdDiaAtendimento As Int32)

        Dim iIdRegiao As Int32

        Try
            iIdRegiao = Me.objRegiao.inserirRegiao(sRegiao, _
                                                   iIdDiaAtendimento)

            Return iIdRegiao

        Catch ex As Exception
            Throw New Exception("Exceção no método 'inserirRegiao'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region
End Class
